/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package controller;

import beans.B_ControlAuditoria;
import beans.B_Equipo;
import beans.B_ObjetivoControlAuditoria;
import beans.B_Pregunta;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import beans.B_PreguntaResponsable;
import db.DB_ControlAuditoria;
import db.DB_ObjetivoControlAuditoria;
import db.DB_PreguntaResponsable;
import java.util.ArrayList;

/**
 *
 * @author JoseHernan
 */
public class C_PreguntaResponsable extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        PrintWriter out = response.getWriter();
        HttpSession session = request.getSession(true);
        //Preguntamos si estamos logueados
        if (session.getAttribute("userName") != null) {
            String action = request.getParameter("action");
            String userName = session.getAttribute("userName").toString();
            String mensaje = "";
            int flagAccion = 0;
            String id = request.getParameter("id");
            //Parameters
            String idPregunta = request.getParameter("idPregunta");
            String idResponsable = request.getParameter("idResponsable");

            B_PreguntaResponsable obj;
            B_Equipo objEquipo;
            B_Pregunta objPregunta;
            //New
            if (action.equals("n")) {
                //Set Parameters
                obj = new B_PreguntaResponsable();
                objPregunta = new B_Pregunta();
                objPregunta.setId(Integer.parseInt(idPregunta));
                obj.setObjPregunta(objPregunta);
                objEquipo = new B_Equipo();
                objEquipo.setId(Integer.parseInt(idResponsable));
                obj.setObjEquipo(objEquipo);
                obj.setUser(userName);
                mensaje = DB_PreguntaResponsable.crud(obj, action);
                flagAccion = 1;
            } //Update
            else if (action.equals("u")) {
                //Set Parameters
                obj = new B_PreguntaResponsable();
                obj.setId(Integer.parseInt(id));
                objPregunta = new B_Pregunta();
                objPregunta.setId(Integer.parseInt(idPregunta));
                obj.setObjPregunta(objPregunta);
                objEquipo = new B_Equipo();
                objEquipo.setId(Integer.parseInt(idResponsable));
                obj.setObjEquipo(objEquipo);
                obj.setUser(userName);
                mensaje = DB_PreguntaResponsable.crud(obj, action);
                flagAccion = 1;
            } //Delete
            else if (action.equals("d")) {
                obj = new B_PreguntaResponsable();
                obj.setId(Integer.parseInt(id));
                mensaje = DB_PreguntaResponsable.crud(obj, action);
                flagAccion = 1;
            } else if (action.equals("ds")) {
                String[] itemsDelete = id.split(",");
                //Verificamos que tenga mas de 1 item
                if (itemsDelete.length > 0) {
                    for (int i = 0; i < itemsDelete.length; i++) {
                        obj = new B_PreguntaResponsable();
                        obj.setId(Integer.parseInt(itemsDelete[i]));
                        mensaje += DB_PreguntaResponsable.crud(obj, "d");
                        if ((i + 1) < itemsDelete.length) {
                            mensaje += "***";
                        }
                    }
                }
                flagAccion = 1;
            }//Get Objetivos
            else if (action.equals("get_objetivos")) {
                mensaje = getObjetivosHtml(Integer.parseInt(request.getParameter("idDominio")));
                flagAccion = 1;
            }//Get Controles
            else if (action.equals("get_controles")) {
                mensaje = getControlesHtml(Integer.parseInt(request.getParameter("idObjetivoControl")));
                flagAccion = 1;
            } 
            if (flagAccion == 0) {
                mensaje = "La página solicitada no existe.";
                response.sendRedirect("mensaje.jsp?mensaje=" + mensaje + "&pagina=home.jsp");
            } else {
                out.write(mensaje);
            }
        } else {
            //WITHOUT SESSION
            String mensaje = "Su sesion a expirado, ingrese nuevamente.";
            response.sendRedirect("mensaje.jsp?mensaje=" + mensaje + "&pagina=index.jsp");
        }
    }

    public String getControlesHtml(int idObjetivoControl) {
        StringBuilder html = new StringBuilder();
        ArrayList<B_ControlAuditoria> listObjetivos = DB_ControlAuditoria.getListByIdObjetivoControl(idObjetivoControl);
        B_ControlAuditoria objControlAuditoria;
        if (listObjetivos.size() > 0) {
            html.append("<div class=\"portlet-body\" id=\"body_objetivoControl_").append(idObjetivoControl).append("\" style=\"display: none;\">");
            for (B_ControlAuditoria listObjetivo : listObjetivos) {
                objControlAuditoria = listObjetivo;
                html.append("<div class=\"portlet box grey-gallery\" style=\"margin-bottom: 7px;\" onclick=\"changeDataModalCustom('View/AsignarPregunta/V_Preguntas.jsp?idControlAuditoria=").append(objControlAuditoria.getId()).append("','40%');\">");
                html.append("<div class=\"portlet-title\" id=\"title_controlAuditoria_").append(objControlAuditoria.getId()).append("\" style=\"cursor: pointer;\">");
                html.append("<div class=\"caption\" style=\"font-size: 14px;\">");
                html.append("<i class=\"fa fa-check\"></i> Control de Auditoría: ").append(objControlAuditoria.getCodigo()).append(" ").append(objControlAuditoria.getNombre());
                html.append("</div>");
                html.append("<div class=\"tools\">");
                //                html.append("<i class=\"fa fa-angle-up\" id=\"icon_controlAuditoria_").append(objControlAuditoria.getId()).append("\"></i>");
                html.append("</div>");
                html.append("</div>");
                html.append("</div>");
            }
            html.append("</div>");
        } else {
            html.append("<div class=\"alert alert-warning\" style=\"margin-bottom: 0px;\" id=\"body_objetivoControl_").append(idObjetivoControl).append("\">");
            html.append("No se encontraron <strong>Controles de Auditoría</strong> registrados.");
            html.append("</div>");
        }
        return html.toString();
    }

    public String getObjetivosHtml(int idDominioAuditoria) {
        StringBuilder html = new StringBuilder();
        ArrayList<B_ObjetivoControlAuditoria> listObjetivos = DB_ObjetivoControlAuditoria.getListByIdDominioAuditoria(idDominioAuditoria);
        B_ObjetivoControlAuditoria objObjetivoControl;
        if (listObjetivos.size() > 0) {
            html.append("<div class=\"portlet-body\" id=\"body_dominio_").append(idDominioAuditoria).append("\" style=\"display: none;\">");
            for (B_ObjetivoControlAuditoria listObjetivo : listObjetivos) {
                objObjetivoControl = listObjetivo;
                html.append("<div class=\"portlet box blue\" style=\"margin-bottom: 7px;\">");
                html.append("<div class=\"portlet-title\" id=\"title_objetivoControl_").append(objObjetivoControl.getId()).append("\" style=\"cursor: pointer;\" onclick=\"showControlesAuditoria(").append(objObjetivoControl.getId()).append(");\">");
                html.append("<div class=\"caption\" style=\"font-size: 14px;\">");
                html.append("<i class=\"fa fa-edit\"></i> Objetivo de Control: ").append(objObjetivoControl.getCodigo()).append(" ").append(objObjetivoControl.getNombre());
                html.append("</div>");
                html.append("<div class=\"tools\">");
                html.append("<i class=\"fa fa-angle-up").append("\" id=\"icon_objetivoControl_").append(objObjetivoControl.getId()).append("\"></i>");
                html.append("</div>");
                html.append("</div>");
                html.append("</div>");
            }
            html.append("</div>");
        } else {
            html.append("<div class=\"alert alert-warning\" style=\"margin-bottom: 0px;\" id=\"body_dominio_").append(idDominioAuditoria).append("\">");
            html.append("No se encontraron <strong>Objetivos de Control</strong> registrados.");
            html.append("</div>");
        }
        return html.toString();
    }
}
